package com.mall.live.controller;

import com.github.pagehelper.PageInfo;
import com.mall.common.response.CommonResponse;
import com.mall.entity.TbCar;
import com.mall.entity.live.TbLiveProduct;
import com.mall.live.service.LiveProductService;
import com.mall.live.vo.Details;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 直播商品控制器
 *
 * @author S
 * @date 2021/07/27
 */
@RestController
@RequestMapping("/liveProduct")
@CrossOrigin
public class LiveProductController {

    @Autowired
    private LiveProductService liveProductService;

    /**
     * 获取所有在直播的商品
     * 按照时间倒序
     * @return CommonResponse
     */
    @GetMapping("/findAll")
    public CommonResponse findAll(){
        return liveProductService.findAll();
    }

    /**
     * 获取直播标题包含‘搭配’的商品
     * 按照时间倒序
     * @return CommonResponse
     */
    @GetMapping("/findRecommendList")
    public CommonResponse findRecommendList(){
        return liveProductService.findRecommendList();
    }

    /**
     * 获取当前直播的商品信息
     * @return PageInfo
     */
    @GetMapping("/findLiveProduct")
    public PageInfo findLiveProduct(
            @RequestParam("itemId") Long itemId,
            @RequestParam(value = "page",defaultValue = "1")Integer page,
            @RequestParam(value = "size",defaultValue = "10")Integer size){
        return liveProductService.findLiveProduct(itemId,page,size);
    }

    /**
     * 获取直播间售卖的商品
     * @param lid
     * @return
     */
    @GetMapping("/liveGoods")
    public List<TbLiveProduct> liveGoods(Long lid){
        return liveProductService.liveGoods(lid);
    }

    /**
     * 加入购物车
     * @param id 商品ID
     * @param token 登录人token 用于获取登录人信息
     * @param num 购买个数
     * @return
     */
    @GetMapping("/car")
    public CommonResponse car(Long id,String token,Integer num){
            return liveProductService.car(id,token,num);
    }

    /**
     * 查看我自己的购物车
     * @param token
     * @return
     */
    @GetMapping("/myCar")
    public List<TbCar> myCar(String token){
        return liveProductService.myCar(token);
    }

    /**
     * 购买，获得购物车里需要购买的信息加入订单
     * @param id
     * @return
     */
    @GetMapping("/buy")
    public CommonResponse buy(String token,Long id){
        return liveProductService.buy(token,id);
    }


    /**
     * 直播间的商品详情
     * @param id
     */
    @GetMapping("/details")
    public Details details(Long id){
        return liveProductService.details(id);
    }
}
